package main

import "fmt"

/*
数组的初始化方式
*/
func main() {
	//第一种：
	var arr1 [3]int = [3]int{3, 6, 9}
	fmt.Println(arr1)
	//第二种：
	var arr2 = [3]int{1, 4, 7}
	fmt.Println(arr2)
	//第三种：
	var arr3 = [...]int{4, 5, 6, 7}
	fmt.Println(arr3)
	//第四种：(索引值 : 具体指)
	var arr4 = [...]int{2: 66, 0: 33, 1: 99, 3: 88}
	fmt.Println(arr4)

	fmt.Println("---------------- ---------------- ----------------")
	//长度属于类型的一部分
	//数组的类型为: [3]int, 包含了 3 这个长度值
	fmt.Printf("数组的类型为: %T", arr1)
	fmt.Println()

	//Go中数组属值类型，在默认情况下是值传递，因此会进行值拷贝
	fmt.Println(arr1)
	test64(arr1)
	fmt.Println(arr1)

	//如想在其它函数中，去修改原来的数组，可以使用引用传递(指针方式)
	test64_2(&arr1)
	fmt.Println(arr1)

}

func test64(arr [3]int) {
	arr[0] = 7
	arr[1] = 17
	arr[2] = 47
}

func test64_2(arr *[3]int) {
	(*arr)[0] = 7
	(*arr)[1] = 17
	(*arr)[2] = 47
}
